package com.four.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * ClassName:UploadUtil
 * Description:
 * date:2022/9/29 19:24
 *
 * @since JDK 1.8
 */
public class UploadUtil {

    public static String upload(MultipartFile file, HttpServletRequest request) throws IOException {
        //获取上传的路径
        String path = request.getSession().getServletContext().getRealPath("upload");
        File target = new File(path);
        //判断文件夹是否存在
        if (!target.exists()) {
            target.mkdirs();//创建文件夹
        }
        //把上面myfile 转移到 target目录下。 IO
        System.out.println(file.getOriginalFilename());
        String filename = UUID.randomUUID() + file.getOriginalFilename();
        File file2 = new File(path + "/" + filename);
        file.transferTo(file2);
        return path + "/" + filename;
    }

    public static String ossUpload(MultipartFile file) throws Exception {
        // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        //LTAI5tGyodRRDrvojFrPDBQC
        //LqNZsO0fiPFBoTbYqhUx8tDKctChEl
        String accessKeyId = "LTAI5tDDf4A4p4SBtj3A1z7o";
        String accessKeySecret = "9kmmOfxtjRJJ0AVh5KQNgmjjT9MfpR";
        // 填写Bucket名称，例如examplebucket。
        String bucketName = "zcm1206";
        // 填写Object完整路径，完整路径中不能包含Bucket名称，例如exampledir/exampleobject.txt。
        String objectName = UUID.randomUUID() + file.getOriginalFilename();
        // 填写本地文件的完整路径，例如D:\\localpath\\examplefile.txt。
        // 如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件流。

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        InputStream inputStream = file.getInputStream();
        // 创建PutObject请求。
        ossClient.putObject(bucketName, objectName, inputStream);
        //https://qy158-shuai.oss-cn-hangzhou.aliyuncs.com/1.jpg
        String path = "https://" + bucketName + "." + endpoint + "/" + objectName;
        return path;

    }
}
